<!DOCTYPE html>
<html lang="zh-cn" itemscope itemtype="http://schema.org/WebPage">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title> - 友知弄</title>
  

<meta name="renderer" content="webkit" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>

<meta name="MobileOptimized" content="width"/>
<meta name="HandheldFriendly" content="true"/>


<meta name="applicable-device" content="pc,mobile">

<meta name="theme-color" content="#f8f5ec" />
<meta name="msapplication-navbutton-color" content="#f8f5ec">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="#f8f5ec">

<meta name="mobile-web-app-capable" content="yes">

<meta name="author" content="yixy" />
  <meta name="description" content="性能分析()——观测工具 性能观测工具可以按照系统级别和进程级别来分类。多数的工具要么基于计数器要么基于跟踪，还有一些性能工具本身是基于计数器或者跟踪工具的，比如剖析（profiling，对系统或进程进行一系列快照，以此进行观测）和监视工具。
1. 计数器 内核维护了各种统计数据，称为计数器，用于对事件计数。通常计数器实现为无符号的整型数，发生事件时递增。计数器的使用可以认为是“零开销”的，因为他们默认就是开启的，而且始终由内核维护。唯一的使用开销是从用户空间读取它们的时候，但这个开销基本可以忽略不计。
系统级别：（下面这些工具利用内核的计数器在系统软硬件的环境中检查系统级别的活动。
 vmstat：虚拟内存和物理内存的统计，系统级别。 mpstat：每个CPU的使用情况 iostat：每个磁盘IO的使用情况，由块设备接口报告 netstat：网络接口的统计，TCP/IP栈的统计，以及每个连接的一些统计信息 sar：各种各样的统计，能归档历史数据。  进程级别：（以进程为导向，使用内核为每个进程维护的计算器。一般来说，下面这些工具是从proc文件系统里读取统计信息的。）
 ps：进程状态，显示进程的各种统计信息，包括内存和CPU的使用 top：按一个统计数据(如CPU使用)排序，显示排名高的进程。基于 Solaris的系统对应的工具是 prstat(1M) pmap：将进程的内存段和使用统计一起列出。  2. 跟踪 跟踪收集每一个事件的数据以供分析。跟踪框架一般默认是不启用的，因为跟踪捕获数据会有CPU开销，另外还需要不小的存储空间来存放数据。这些开销会拖慢所跟踪的对象，在解释测量时间的时候需要加以考虑。
日志，包括系统日志，可以认为是一种默认开启的低频率跟踪。日志包括每一个事件的数据，虽然通常只针对偶发事件，如错误和警告。
系统级别：利用内核的跟踪设施，下面的跟踪工具在系统软硬件的环境中检查系统级别的活动。
 tcpdump：网络包跟踪，使用libpcap库。 snoop：为基于 Solaris的系统打造的网络包跟踪工具。 blktrace：块IO跟踪（Linux） iosnoop：块O跟踪(基于 DTrace)。 execsnoop：跟踪新进程(基于 DTrace)。 dtruss：系统级别的系统调用缓冲跟踪(基于 DTrace)。 DTrace：跟踪内核的内部活动和所有资源的使用情况(不仅仅是网络和块IO) SystemTap：跟踪内核的内部活动和所有资源的使用情况，支持静态和动态的跟踪。 perf：Linux性能事件，跟踪静态和动态的探针。  进程级别：以进程为导向的，基于的是操作系统提供的框架
strace：基于 Linux系统的系统调用跟踪。 truss：基于 Solaris系统的系统调用跟踪。 gdb：源代码级别的调试器，广泛应用于 Linux系统。 mdb： Solaris系统的一个具有可扩展性的调试器。 调试器能够检查每一个事件的数据，不过做这件事情时需要停止目标程序的执行，然后再启动。 诸如 DTrace、 SystemTap和perf这样的工具，虽然更适合归纳到系统级别一类中，但是它们都支持对单个进程做检查。 4.1
进程级别：
3. 剖析 4. 监视 time命令属于什么观测工具呢？" />

  <meta name="keywords" content="essay, notes" />






<meta name="generator" content="Hugo 0.56.1" />


<link rel="canonical" href="https://yixy.github.io/youzhilane/post/02%E7%B3%BB%E7%BB%9F%E7%BC%96%E7%A8%8B/%E7%B3%BB%E7%BB%9F%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90/%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90xx-%E8%A7%82%E6%B5%8B%E5%B7%A5%E5%85%B7/" />



<link rel="icon" href="/youzhilane/favicon.ico" />











<link rel="stylesheet" href="/youzhilane/sass/jane.min.af20b78e95c84de86b00a0242a4a77bd2601700e1b250edf27537d957ac0041d.css" integrity="sha256-ryC3jpXITehrAKAkKkp3vSYBcA4bJQ7fJ1N9lXrABB0=" media="screen" crossorigin="anonymous">





<meta property="og:title" content="" />
<meta property="og:description" content="性能分析()——观测工具 性能观测工具可以按照系统级别和进程级别来分类。多数的工具要么基于计数器要么基于跟踪，还有一些性能工具本身是基于计数器或者跟踪工具的，比如剖析（profiling，对系统或进程进行一系列快照，以此进行观测）和监视工具。
1. 计数器 内核维护了各种统计数据，称为计数器，用于对事件计数。通常计数器实现为无符号的整型数，发生事件时递增。计数器的使用可以认为是“零开销”的，因为他们默认就是开启的，而且始终由内核维护。唯一的使用开销是从用户空间读取它们的时候，但这个开销基本可以忽略不计。
系统级别：（下面这些工具利用内核的计数器在系统软硬件的环境中检查系统级别的活动。
 vmstat：虚拟内存和物理内存的统计，系统级别。 mpstat：每个CPU的使用情况 iostat：每个磁盘IO的使用情况，由块设备接口报告 netstat：网络接口的统计，TCP/IP栈的统计，以及每个连接的一些统计信息 sar：各种各样的统计，能归档历史数据。  进程级别：（以进程为导向，使用内核为每个进程维护的计算器。一般来说，下面这些工具是从proc文件系统里读取统计信息的。）
 ps：进程状态，显示进程的各种统计信息，包括内存和CPU的使用 top：按一个统计数据(如CPU使用)排序，显示排名高的进程。基于 Solaris的系统对应的工具是 prstat(1M) pmap：将进程的内存段和使用统计一起列出。  2. 跟踪 跟踪收集每一个事件的数据以供分析。跟踪框架一般默认是不启用的，因为跟踪捕获数据会有CPU开销，另外还需要不小的存储空间来存放数据。这些开销会拖慢所跟踪的对象，在解释测量时间的时候需要加以考虑。
日志，包括系统日志，可以认为是一种默认开启的低频率跟踪。日志包括每一个事件的数据，虽然通常只针对偶发事件，如错误和警告。
系统级别：利用内核的跟踪设施，下面的跟踪工具在系统软硬件的环境中检查系统级别的活动。
 tcpdump：网络包跟踪，使用libpcap库。 snoop：为基于 Solaris的系统打造的网络包跟踪工具。 blktrace：块IO跟踪（Linux） iosnoop：块O跟踪(基于 DTrace)。 execsnoop：跟踪新进程(基于 DTrace)。 dtruss：系统级别的系统调用缓冲跟踪(基于 DTrace)。 DTrace：跟踪内核的内部活动和所有资源的使用情况(不仅仅是网络和块IO) SystemTap：跟踪内核的内部活动和所有资源的使用情况，支持静态和动态的跟踪。 perf：Linux性能事件，跟踪静态和动态的探针。  进程级别：以进程为导向的，基于的是操作系统提供的框架
strace：基于 Linux系统的系统调用跟踪。 truss：基于 Solaris系统的系统调用跟踪。 gdb：源代码级别的调试器，广泛应用于 Linux系统。 mdb： Solaris系统的一个具有可扩展性的调试器。 调试器能够检查每一个事件的数据，不过做这件事情时需要停止目标程序的执行，然后再启动。 诸如 DTrace、 SystemTap和perf这样的工具，虽然更适合归纳到系统级别一类中，但是它们都支持对单个进程做检查。 4.1
进程级别：
3. 剖析 4. 监视 time命令属于什么观测工具呢？" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://yixy.github.io/youzhilane/post/02%E7%B3%BB%E7%BB%9F%E7%BC%96%E7%A8%8B/%E7%B3%BB%E7%BB%9F%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90/%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90xx-%E8%A7%82%E6%B5%8B%E5%B7%A5%E5%85%B7/" />

<meta itemprop="name" content="">
<meta itemprop="description" content="性能分析()——观测工具 性能观测工具可以按照系统级别和进程级别来分类。多数的工具要么基于计数器要么基于跟踪，还有一些性能工具本身是基于计数器或者跟踪工具的，比如剖析（profiling，对系统或进程进行一系列快照，以此进行观测）和监视工具。
1. 计数器 内核维护了各种统计数据，称为计数器，用于对事件计数。通常计数器实现为无符号的整型数，发生事件时递增。计数器的使用可以认为是“零开销”的，因为他们默认就是开启的，而且始终由内核维护。唯一的使用开销是从用户空间读取它们的时候，但这个开销基本可以忽略不计。
系统级别：（下面这些工具利用内核的计数器在系统软硬件的环境中检查系统级别的活动。
 vmstat：虚拟内存和物理内存的统计，系统级别。 mpstat：每个CPU的使用情况 iostat：每个磁盘IO的使用情况，由块设备接口报告 netstat：网络接口的统计，TCP/IP栈的统计，以及每个连接的一些统计信息 sar：各种各样的统计，能归档历史数据。  进程级别：（以进程为导向，使用内核为每个进程维护的计算器。一般来说，下面这些工具是从proc文件系统里读取统计信息的。）
 ps：进程状态，显示进程的各种统计信息，包括内存和CPU的使用 top：按一个统计数据(如CPU使用)排序，显示排名高的进程。基于 Solaris的系统对应的工具是 prstat(1M) pmap：将进程的内存段和使用统计一起列出。  2. 跟踪 跟踪收集每一个事件的数据以供分析。跟踪框架一般默认是不启用的，因为跟踪捕获数据会有CPU开销，另外还需要不小的存储空间来存放数据。这些开销会拖慢所跟踪的对象，在解释测量时间的时候需要加以考虑。
日志，包括系统日志，可以认为是一种默认开启的低频率跟踪。日志包括每一个事件的数据，虽然通常只针对偶发事件，如错误和警告。
系统级别：利用内核的跟踪设施，下面的跟踪工具在系统软硬件的环境中检查系统级别的活动。
 tcpdump：网络包跟踪，使用libpcap库。 snoop：为基于 Solaris的系统打造的网络包跟踪工具。 blktrace：块IO跟踪（Linux） iosnoop：块O跟踪(基于 DTrace)。 execsnoop：跟踪新进程(基于 DTrace)。 dtruss：系统级别的系统调用缓冲跟踪(基于 DTrace)。 DTrace：跟踪内核的内部活动和所有资源的使用情况(不仅仅是网络和块IO) SystemTap：跟踪内核的内部活动和所有资源的使用情况，支持静态和动态的跟踪。 perf：Linux性能事件，跟踪静态和动态的探针。  进程级别：以进程为导向的，基于的是操作系统提供的框架
strace：基于 Linux系统的系统调用跟踪。 truss：基于 Solaris系统的系统调用跟踪。 gdb：源代码级别的调试器，广泛应用于 Linux系统。 mdb： Solaris系统的一个具有可扩展性的调试器。 调试器能够检查每一个事件的数据，不过做这件事情时需要停止目标程序的执行，然后再启动。 诸如 DTrace、 SystemTap和perf这样的工具，虽然更适合归纳到系统级别一类中，但是它们都支持对单个进程做检查。 4.1
进程级别：
3. 剖析 4. 监视 time命令属于什么观测工具呢？">



<meta itemprop="wordCount" content="55">



<meta itemprop="keywords" content="" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content=""/>
<meta name="twitter:description" content="性能分析()——观测工具 性能观测工具可以按照系统级别和进程级别来分类。多数的工具要么基于计数器要么基于跟踪，还有一些性能工具本身是基于计数器或者跟踪工具的，比如剖析（profiling，对系统或进程进行一系列快照，以此进行观测）和监视工具。
1. 计数器 内核维护了各种统计数据，称为计数器，用于对事件计数。通常计数器实现为无符号的整型数，发生事件时递增。计数器的使用可以认为是“零开销”的，因为他们默认就是开启的，而且始终由内核维护。唯一的使用开销是从用户空间读取它们的时候，但这个开销基本可以忽略不计。
系统级别：（下面这些工具利用内核的计数器在系统软硬件的环境中检查系统级别的活动。
 vmstat：虚拟内存和物理内存的统计，系统级别。 mpstat：每个CPU的使用情况 iostat：每个磁盘IO的使用情况，由块设备接口报告 netstat：网络接口的统计，TCP/IP栈的统计，以及每个连接的一些统计信息 sar：各种各样的统计，能归档历史数据。  进程级别：（以进程为导向，使用内核为每个进程维护的计算器。一般来说，下面这些工具是从proc文件系统里读取统计信息的。）
 ps：进程状态，显示进程的各种统计信息，包括内存和CPU的使用 top：按一个统计数据(如CPU使用)排序，显示排名高的进程。基于 Solaris的系统对应的工具是 prstat(1M) pmap：将进程的内存段和使用统计一起列出。  2. 跟踪 跟踪收集每一个事件的数据以供分析。跟踪框架一般默认是不启用的，因为跟踪捕获数据会有CPU开销，另外还需要不小的存储空间来存放数据。这些开销会拖慢所跟踪的对象，在解释测量时间的时候需要加以考虑。
日志，包括系统日志，可以认为是一种默认开启的低频率跟踪。日志包括每一个事件的数据，虽然通常只针对偶发事件，如错误和警告。
系统级别：利用内核的跟踪设施，下面的跟踪工具在系统软硬件的环境中检查系统级别的活动。
 tcpdump：网络包跟踪，使用libpcap库。 snoop：为基于 Solaris的系统打造的网络包跟踪工具。 blktrace：块IO跟踪（Linux） iosnoop：块O跟踪(基于 DTrace)。 execsnoop：跟踪新进程(基于 DTrace)。 dtruss：系统级别的系统调用缓冲跟踪(基于 DTrace)。 DTrace：跟踪内核的内部活动和所有资源的使用情况(不仅仅是网络和块IO) SystemTap：跟踪内核的内部活动和所有资源的使用情况，支持静态和动态的跟踪。 perf：Linux性能事件，跟踪静态和动态的探针。  进程级别：以进程为导向的，基于的是操作系统提供的框架
strace：基于 Linux系统的系统调用跟踪。 truss：基于 Solaris系统的系统调用跟踪。 gdb：源代码级别的调试器，广泛应用于 Linux系统。 mdb： Solaris系统的一个具有可扩展性的调试器。 调试器能够检查每一个事件的数据，不过做这件事情时需要停止目标程序的执行，然后再启动。 诸如 DTrace、 SystemTap和perf这样的工具，虽然更适合归纳到系统级别一类中，但是它们都支持对单个进程做检查。 4.1
进程级别：
3. 剖析 4. 监视 time命令属于什么观测工具呢？"/>

<!--[if lte IE 9]>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/classlist/1.1.20170427/classList.min.js"></script>
<![endif]-->

<!--[if lt IE 9]>
  <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->




</head>
<body>
  <div id="mobile-navbar" class="mobile-navbar">
  <div class="mobile-header-logo">
    <a href="/youzhilane/" class="logo">友知弄</a>
  </div>
  <div class="mobile-navbar-icon">
    <span></span>
    <span></span>
    <span></span>
  </div>
</div>
<nav id="mobile-menu" class="mobile-menu slideout-menu">
  <ul class="mobile-menu-list">
    <li class="mobile-menu-item">
        
          
          
            <a class="menu-item-link" href="https://yixy.github.io/youzhilane/">主页</a>
          
        
      </li><li class="mobile-menu-item">
        
          
          
            <a class="menu-item-link" href="https://yixy.github.io/youzhilane/categories/">分类</a>
          
        
      </li><li class="mobile-menu-item">
        
          
          
            <a class="menu-item-link" href="https://yixy.github.io/youzhilane/booklist/">书单</a>
          
        
      </li><li class="mobile-menu-item">
        
          
          
            <a class="menu-item-link" href="https://yixy.github.io/youzhilane/about/">关于友知弄</a>
          
        
      </li><li class="mobile-menu-item">
        
          
          
            <a class="menu-item-link" href="https://github.com/yixy" rel="noopener" target="_blank">
              GitHub
              
              <i class="iconfont">
                <svg class="icon" viewBox="0 0 1024 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="18" height="18">
  <path d="M623.36 272.96 473.216 423.04C467.2 429.056 467.072 438.656 472.896 444.416c0 0-6.72-6.656 1.6 1.6C496.064 467.648 528.64 500.224 528.64 500.224 534.464 506.048 544 505.856 550.016 499.904l150.08-150.144 67.328 66.432c9.024 8.96 27.456 4.544 30.4-8.96 19.968-92.608 46.656-227.52 46.656-227.52 6.848-34.496-16.192-56.704-49.92-49.92 0 0-134.656 26.816-227.328 46.784C560.32 178.048 556.352 182.272 554.752 187.136c-3.2 6.208-3.008 14.208 3.776 20.992L623.36 272.96z"></path>
  <path d="M841.152 457.152c-30.528 0-54.784 24.512-54.784 54.656l0 274.752L237.696 786.56 237.696 237.696l206.016 0c6.656 0 10.752 0 13.248 0C487.68 237.696 512 213.184 512 182.848 512 152.32 487.36 128 456.96 128L183.04 128C153.216 128 128 152.576 128 182.848c0 3.136 0.256 6.272 0.768 9.28C128.256 195.136 128 198.272 128 201.408l0 639.488c0 0.064 0 0.192 0 0.256 0 0.128 0 0.192 0 0.32 0 30.528 24.512 54.784 54.784 54.784l646.976 0c6.592 0 9.728 0 11.712 0 28.736 0 52.928-22.976 54.464-51.968C896 843.264 896 842.304 896 841.344l0-20.352L896 561.408 896 512.128C896 481.792 871.424 457.152 841.152 457.152z"></path>
</svg>

              </i>
            </a>
          
        
      </li><li class="mobile-menu-item">
        
          
          <div class="mobile-menu-parent">
            <span class="mobile-submenu-open"></span>
            <a href="https://yixy.github.io/youzhilane/post/">
              归档
            </a>
          </div>
          <ul class="mobile-submenu-list">
            
              <li>
                <a href="https://yixy.github.io/youzhilane/post/">日期</a>
              </li>
            
              <li>
                <a href="https://yixy.github.io/youzhilane/tags/">标签</a>
              </li>
            
          </ul>
        
      </li>
    

    
  </ul>
</nav>


  
    






  <link rel="stylesheet" href="/youzhilane/lib/photoswipe/photoswipe.min.css" />
  <link rel="stylesheet" href="/youzhilane/lib/photoswipe/default-skin/default-skin.min.css" />




<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

<div class="pswp__bg"></div>

<div class="pswp__scroll-wrap">
    
    <div class="pswp__container">
      <div class="pswp__item"></div>
      <div class="pswp__item"></div>
      <div class="pswp__item"></div>
    </div>
    
    <div class="pswp__ui pswp__ui--hidden">
    <div class="pswp__top-bar">
      
      <div class="pswp__counter"></div>
      <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
      <button class="pswp__button pswp__button--share" title="Share"></button>
      <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
      <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
      
      
      <div class="pswp__preloader">
        <div class="pswp__preloader__icn">
          <div class="pswp__preloader__cut">
            <div class="pswp__preloader__donut"></div>
          </div>
        </div>
      </div>
    </div>
    <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
      <div class="pswp__share-tooltip"></div>
    </div>
    <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
    </button>
    <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
    </button>
    <div class="pswp__caption">
      <div class="pswp__caption__center"></div>
    </div>
    </div>
    </div>
</div>

  

  

  

  <header id="header" class="header container">
    <div class="logo-wrapper">
  <a href="/youzhilane/" class="logo">
    
      友知弄
    
  </a>
</div>

<nav class="site-navbar">
  <ul id="menu" class="menu">
    
    
        <li class="menu-item">
        
          
          
            <a class="menu-item-link" href="https://yixy.github.io/youzhilane/">主页</a>
          

        

      </li>
    
        <li class="menu-item">
        
          
          
            <a class="menu-item-link" href="https://yixy.github.io/youzhilane/categories/">分类</a>
          

        

      </li>
    
        <li class="menu-item">
        
          
          
            <a class="menu-item-link" href="https://yixy.github.io/youzhilane/booklist/">书单</a>
          

        

      </li>
    
        <li class="menu-item">
        
          
          
            <a class="menu-item-link" href="https://yixy.github.io/youzhilane/about/">关于友知弄</a>
          

        

      </li>
    
        <li class="menu-item">
        
          
          
            <a class="menu-item-link" href="https://github.com/yixy" rel="noopener" target="_blank">
              GitHub
              
              <i class="iconfont">
                <svg class="icon" viewBox="0 0 1024 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="18" height="18">
  <path d="M623.36 272.96 473.216 423.04C467.2 429.056 467.072 438.656 472.896 444.416c0 0-6.72-6.656 1.6 1.6C496.064 467.648 528.64 500.224 528.64 500.224 534.464 506.048 544 505.856 550.016 499.904l150.08-150.144 67.328 66.432c9.024 8.96 27.456 4.544 30.4-8.96 19.968-92.608 46.656-227.52 46.656-227.52 6.848-34.496-16.192-56.704-49.92-49.92 0 0-134.656 26.816-227.328 46.784C560.32 178.048 556.352 182.272 554.752 187.136c-3.2 6.208-3.008 14.208 3.776 20.992L623.36 272.96z"></path>
  <path d="M841.152 457.152c-30.528 0-54.784 24.512-54.784 54.656l0 274.752L237.696 786.56 237.696 237.696l206.016 0c6.656 0 10.752 0 13.248 0C487.68 237.696 512 213.184 512 182.848 512 152.32 487.36 128 456.96 128L183.04 128C153.216 128 128 152.576 128 182.848c0 3.136 0.256 6.272 0.768 9.28C128.256 195.136 128 198.272 128 201.408l0 639.488c0 0.064 0 0.192 0 0.256 0 0.128 0 0.192 0 0.32 0 30.528 24.512 54.784 54.784 54.784l646.976 0c6.592 0 9.728 0 11.712 0 28.736 0 52.928-22.976 54.464-51.968C896 843.264 896 842.304 896 841.344l0-20.352L896 561.408 896 512.128C896 481.792 871.424 457.152 841.152 457.152z"></path>
</svg>

              </i>
            </a>
          

        

      </li>
    
        <li class="menu-item">
        
          
          <a class="menu-item-link menu-parent" href="https://yixy.github.io/youzhilane/post/">归档</a>
          <ul class="submenu">
            
              <li>
                <a href="https://yixy.github.io/youzhilane/post/">日期</a>
              </li>
            
              <li>
                <a href="https://yixy.github.io/youzhilane/tags/">标签</a>
              </li>
            
          </ul>

        

      </li>
    

    
    

    
  </ul>
</nav>

  </header>

  <div id="mobile-panel">
    <main id="main" class="main bg-llight">
      <div class="content-wrapper">
        <div id="content" class="content container">
          <article class="post bg-white">
    
    <header class="post-header">
      <h1 class="post-title"></h1>
      
      <div class="post-meta">
        <time datetime="0001-01-01" class="post-time">
          0001-01-01
        </time>
        
        <span class="more-meta"> 约 55 字 </span>
          <span class="more-meta"> 预计阅读 1 分钟 </span>

        
        

        
        
      </div>
    </header>

    
    
<div class="post-toc" id="post-toc">
  <h2 class="post-toc-title">文章目录</h2>
  <div class="post-toc-content">
    <nav id="TableOfContents">
<ul>
<li><a href="#性能分析-观测工具">性能分析()——观测工具</a>
<ul>
<li><a href="#1-计数器">1. 计数器</a></li>
<li><a href="#2-跟踪">2. 跟踪</a></li>
<li><a href="#3-剖析">3. 剖析</a></li>
<li><a href="#4-监视">4. 监视</a></li>
</ul></li>
</ul>
</nav>
  </div>
</div>

    
    <div class="post-content">
      

<h1 id="性能分析-观测工具">性能分析()——观测工具</h1>

<p>性能观测工具可以按照系统级别和进程级别来分类。多数的工具要么基于计数器要么基于跟踪，还有一些性能工具本身是基于计数器或者跟踪工具的，比如剖析（profiling，对系统或进程进行一系列快照，以此进行观测）和监视工具。</p>

<h2 id="1-计数器">1. 计数器</h2>

<p>内核维护了各种统计数据，称为计数器，用于对事件计数。通常计数器实现为无符号的整型数，发生事件时递增。计数器的使用可以认为是“零开销”的，因为他们默认就是开启的，而且始终由内核维护。唯一的使用开销是从用户空间读取它们的时候，但这个开销基本可以忽略不计。</p>

<p>系统级别：（下面这些工具利用内核的计数器在系统软硬件的环境中检查系统级别的活动。</p>

<ul>
<li>vmstat：虚拟内存和物理内存的统计，系统级别。</li>
<li>mpstat：每个CPU的使用情况</li>
<li>iostat：每个磁盘IO的使用情况，由块设备接口报告</li>
<li>netstat：网络接口的统计，TCP/IP栈的统计，以及每个连接的一些统计信息</li>
<li>sar：各种各样的统计，能归档历史数据。</li>
</ul>

<p>进程级别：（以进程为导向，使用内核为每个进程维护的计算器。一般来说，下面这些工具是从proc文件系统里读取统计信息的。）</p>

<ul>
<li>ps：进程状态，显示进程的各种统计信息，包括内存和CPU的使用</li>
<li>top：按一个统计数据(如CPU使用)排序，显示排名高的进程。基于 Solaris的系统对应的工具是 prstat(1M)</li>
<li>pmap：将进程的内存段和使用统计一起列出。</li>
</ul>

<h2 id="2-跟踪">2. 跟踪</h2>

<p>跟踪收集每一个事件的数据以供分析。跟踪框架一般默认是不启用的，因为跟踪捕获数据会有CPU开销，另外还需要不小的存储空间来存放数据。这些开销会拖慢所跟踪的对象，在解释测量时间的时候需要加以考虑。</p>

<p>日志，包括系统日志，可以认为是一种默认开启的低频率跟踪。日志包括每一个事件的数据，虽然通常只针对偶发事件，如错误和警告。</p>

<p>系统级别：利用内核的跟踪设施，下面的跟踪工具在系统软硬件的环境中检查系统级别的活动。</p>

<ul>
<li>tcpdump：网络包跟踪，使用libpcap库。</li>
<li>snoop：为基于 Solaris的系统打造的网络包跟踪工具。</li>
<li>blktrace：块IO跟踪（Linux）</li>
<li>iosnoop：块O跟踪(基于 DTrace)。</li>
<li>execsnoop：跟踪新进程(基于 DTrace)。</li>
<li>dtruss：系统级别的系统调用缓冲跟踪(基于 DTrace)。</li>
<li>DTrace：跟踪内核的内部活动和所有资源的使用情况(不仅仅是网络和块IO)</li>
<li>SystemTap：跟踪内核的内部活动和所有资源的使用情况，支持静态和动态的跟踪。</li>
<li>perf：Linux性能事件，跟踪静态和动态的探针。</li>
</ul>

<p>进程级别：以进程为导向的，基于的是操作系统提供的框架</p>

<p>strace：基于 Linux系统的系统调用跟踪。
truss：基于 Solaris系统的系统调用跟踪。
gdb：源代码级别的调试器，广泛应用于 Linux系统。
mdb： Solaris系统的一个具有可扩展性的调试器。
调试器能够检查每一个事件的数据，不过做这件事情时需要停止目标程序的执行，然后再启动。
诸如 DTrace、 SystemTap和perf这样的工具，虽然更适合归纳到系统级别一类中，但是它们都支持对单个进程做检查。
4.1</p>

<p>进程级别：</p>

<h2 id="3-剖析">3. 剖析</h2>

<h2 id="4-监视">4. 监视</h2>

<p>time命令属于什么观测工具呢？</p>

    </div>

    
    
<div class="post-copyright">
  <p class="copyright-item">
    <span class="item-title">文章作者</span>
    <span class="item-content">yixy</span>
  </p>
  <p class="copyright-item">
    <span class="item-title">上次更新</span>
    <span class="item-content">
      0001-01-01
      
    </span>
  </p>
  
  <p class="copyright-item">
    <span class="item-title">许可协议</span>
    <span class="item-content"><a rel="license noopener" href="https://creativecommons.org/licenses/by-nc-nd/4.0/" target="_blank">CC BY-NC-ND 4.0</a></span>
  </p>
</div>


    
    
<div class="post-reward">
  <input type="checkbox" name="reward" id="reward" hidden />
  <label class="reward-button" for="reward">赞赏支持</label>
  <div class="qr-code">
    
    
      <label class="qr-code-image" for="reward">
        <img class="image" src="/youzhilane/img/about/wechat.jpg">
        <span>微信打赏</span>
      </label>
    
  </div>
</div>

    <footer class="post-footer">
      

      
      <nav class="post-nav">
        
          <a class="prev" href="/youzhilane/post/02%E7%B3%BB%E7%BB%9F%E7%BC%96%E7%A8%8B/%E7%B3%BB%E7%BB%9F%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90/%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90xx-%E7%BD%91%E7%BB%9C/">
            
            <i class="iconfont">
              <svg  class="icon" viewBox="0 0 1024 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="18" height="18">
  <path d="M691.908486 949.511495l75.369571-89.491197c10.963703-12.998035 10.285251-32.864502-1.499144-44.378743L479.499795 515.267417 757.434875 204.940602c11.338233-12.190647 11.035334-32.285311-0.638543-44.850487l-80.46666-86.564541c-11.680017-12.583596-30.356378-12.893658-41.662889-0.716314L257.233596 494.235404c-11.332093 12.183484-11.041474 32.266891 0.657986 44.844348l80.46666 86.564541c1.772366 1.910513 3.706415 3.533476 5.750981 4.877077l306.620399 321.703933C662.505829 963.726242 680.945807 962.528973 691.908486 949.511495z"></path>
</svg>

            </i>
            <span class="prev-text nav-default"></span>
            <span class="prev-text nav-mobile">上一篇</span>
          </a>
        
          <a class="next" href="/youzhilane/post/02%E7%B3%BB%E7%BB%9F%E7%BC%96%E7%A8%8B/%E7%B3%BB%E7%BB%9F%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90/%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90xx-%E8%A7%82%E6%B5%8B%E6%9D%A5%E6%BA%90/">
            <span class="next-text nav-default"></span>
            <span class="prev-text nav-mobile">下一篇</span>
            
            <i class="iconfont">
              <svg class="icon" viewBox="0 0 1024 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="18" height="18">
  <path d="M332.091514 74.487481l-75.369571 89.491197c-10.963703 12.998035-10.285251 32.864502 1.499144 44.378743l286.278095 300.375162L266.565125 819.058374c-11.338233 12.190647-11.035334 32.285311 0.638543 44.850487l80.46666 86.564541c11.680017 12.583596 30.356378 12.893658 41.662889 0.716314l377.434212-421.426145c11.332093-12.183484 11.041474-32.266891-0.657986-44.844348l-80.46666-86.564541c-1.772366-1.910513-3.706415-3.533476-5.750981-4.877077L373.270379 71.774697C361.493148 60.273758 343.054193 61.470003 332.091514 74.487481z"></path>
</svg>

            </i>
          </a>
      </nav>
    </footer>
  </article>

  
  
  
  

  
  

  

  
  

  

  

  

    

  

        </div>
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="icon-links">
  
  
    <a href="mailto:youzhilane01@gmail.com" rel="me noopener" class="iconfont"
      title="email" >
      <svg class="icon" viewBox="0 0 1451 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="36" height="36">
  <path d="M664.781909 681.472759 0 97.881301C0 3.997201 71.046997 0 71.046997 0L474.477909 0 961.649408 0 1361.641813 0C1361.641813 0 1432.688811 3.997201 1432.688811 97.881301L771.345323 681.472759C771.345323 681.472759 764.482731 685.154773 753.594283 688.65053L753.594283 688.664858C741.602731 693.493018 729.424896 695.068979 718.077952 694.839748 706.731093 695.068979 694.553173 693.493018 682.561621 688.664858L682.561621 688.65053C671.644501 685.140446 664.781909 681.472759 664.781909 681.472759L664.781909 681.472759ZM718.063616 811.603883C693.779541 811.016482 658.879232 802.205449 619.10784 767.734955 542.989056 701.759633 0 212.052267 0 212.052267L0 942.809523C0 942.809523 0 1024 83.726336 1024L682.532949 1024 753.579947 1024 1348.948139 1024C1432.688811 1024 1432.688811 942.809523 1432.688811 942.809523L1432.688811 212.052267C1432.688811 212.052267 893.138176 701.759633 817.019477 767.734955 777.248 802.205449 742.347691 811.03081 718.063616 811.603883L718.063616 811.603883Z"></path>
</svg>

    </a>


<a href="https://yixy.github.io/youzhilane/index.xml" rel="noopener alternate" type="application/rss&#43;xml"
    class="iconfont" title="rss" target="_blank">
    <svg class="icon" viewBox="0 0 1024 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="30" height="30">
  <path d="M819.157333 1024C819.157333 574.592 449.408 204.8 0 204.8V0c561.706667 0 1024 462.293333 1024 1024h-204.842667zM140.416 743.04a140.8 140.8 0 0 1 140.501333 140.586667A140.928 140.928 0 0 1 140.074667 1024C62.72 1024 0 961.109333 0 883.626667s62.933333-140.544 140.416-140.586667zM678.784 1024h-199.04c0-263.210667-216.533333-479.786667-479.744-479.786667V345.173333c372.352 0 678.784 306.517333 678.784 678.826667z"></path>
</svg>

  </a>
   
</div>

<div class="copyright">
  <span class="power-by">
    Powered by <a class="hexo-link" href="https://gohugo.io">Hugo</a>
  </span>
  <span class="division">|</span>
  <span class="theme-info">
    Theme - <a class="theme-link" href="https://github.com/xianmin/hugo-theme-jane">Jane</a>
  </span>

  <span class="copyright-year">
    &copy;
    2019
    <span class="heart">
      
      <i class="iconfont">
        <svg class="icon" viewBox="0 0 1025 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="14" height="14">
  <path d="M1000.1 247.9c-15.5-37.3-37.6-70.6-65.7-98.9-54.4-54.8-125.8-85-201-85-85.7 0-166 39-221.4 107.4C456.6 103 376.3 64 290.6 64c-75.1 0-146.5 30.4-201.1 85.6-28.2 28.5-50.4 61.9-65.8 99.3-16 38.8-24 79.9-23.6 122.2 0.7 91.7 40.1 177.2 108.1 234.8 3.1 2.6 6 5.1 8.9 7.8 14.9 13.4 58 52.8 112.6 102.7 93.5 85.5 209.9 191.9 257.5 234.2 7 6.1 15.8 9.5 24.9 9.5 9.2 0 18.1-3.4 24.9-9.5 34.5-30.7 105.8-95.9 181.4-165 74.2-67.8 150.9-138 195.8-178.2 69.5-57.9 109.6-144.4 109.9-237.3 0.1-42.5-8-83.6-24-122.2z"
   fill="#8a8a8a"></path>
</svg>

      </i>
    </span><span class="author">
        yixy
        
      </span></span>

  
  

  
</div>

    </footer>

    <div class="back-to-top" id="back-to-top">
      <i class="iconfont">
        
        <svg class="icon" viewBox="0 0 1024 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="35" height="35">
  <path d="M510.866688 227.694839 95.449397 629.218702l235.761562 0-2.057869 328.796468 362.40389 0L691.55698 628.188232l241.942331-3.089361L510.866688 227.694839zM63.840492 63.962777l894.052392 0 0 131.813095L63.840492 195.775872 63.840492 63.962777 63.840492 63.962777zM63.840492 63.962777"></path>
</svg>

      </i>
    </div>
  </div>
  
<script type="text/javascript" src="/youzhilane/lib/jquery/jquery-3.2.1.min.js"></script>
  <script type="text/javascript" src="/youzhilane/lib/slideout/slideout-1.0.1.min.js"></script>




<script type="text/javascript" src="/youzhilane/js/main.638251f4230630f0335d8c6748e53a96f94b72670920b60c09a56fdc8bece214.js" integrity="sha256-Y4JR9CMGMPAzXYxnSOU6lvlLcmcJILYMCaVv3Ivs4hQ=" crossorigin="anonymous"></script>












  
    <script type="text/javascript" src="/youzhilane/js/load-photoswipe.js"></script>
    <script type="text/javascript" src="/youzhilane/lib/photoswipe/photoswipe.min.js"></script>
    <script type="text/javascript" src="/youzhilane/lib/photoswipe/photoswipe-ui-default.min.js"></script>
  















</body>
</html>
